Software Engineering: Modern Approaches by Eric J. Braude, Michael E. Bernstein
782 pages, $147.95 list
1-4786-3230-5
978-1-4786-3230-6
Student resource materials available here, here, and here
Instructor's resource materials available here
To obtain a username and password to access instructor's materials, contact comps@waveland.com.
eBook availability
Software Engineering
Modern Approaches
Second Edition
Today's software engineer must be able to employ more than one kind of software process, ranging from agile methodologies to the waterfall process, from highly integrated tool suites to refactoring and loosely coupled tool sets. Braude and Bernstein's thorough coverage of software engineering perfects the reader's ability to efficiently create reliable software systems, designed to meet the needs of a variety of customers.

Topical highlights . . .
• Process: concentrates on how applications are planned and developed
• Design: teaches software engineering primarily as a requirements-to-design activity
• Programming and agile methods: encourages software engineering as a code-oriented activity
• Theory and principles: focuses on foundations
• Hands-on projects and case studies: utilizes active team or individual project examples to facilitate understanding theory, principles, and practice

In addition to knowledge of the tools and techniques available to software engineers, readers will grasp the ability to interact with customers, participate in multiple software processes, and express requirements clearly in a variety of ways. They will have the ability to create designs flexible enough for complex, changing environments, and deliver the proper products.

The extra materials, including online chapters and example source code for this title are available. To download these files, right-click the following links and 'Save As.'

Chapter14-Requirements_QA.pdf - 565.83K (approx.)
Chapter21-Agile_Design.pdf - 565.59K (approx.)
Encounter.zip - 772.27K (approx.)
Reactions
“The organization is impressive. It has most of the topics that I cover in the course. The topics are discussed with a reasonable level of detail for students to gain a good understanding of the concepts.” — Shehenaz Shaik, Auburn University
Table of Contents
Part I: INTRODUCTION TO SOFTWARE ENGINEERING

1. The Goals and Terminology of Software Engineering
What Is Software Engineering? / Why Software Engineering Is Critical: Software Disasters / Why Software Fails or Succeeds / Software Engineering Activities / Software Engineering Principles / Ethics in Software Engineering / Case Studies / Summary / Exercises

2. Introduction to Quality and Metrics in Software Engineering
The Meaning of Software Quality / Defects in Software / Verification and Validation / Planning for Quality / Metrics / Summary / Exercises

Part II: SOFTWARE PROCESS

3. Software Process
The Activities of Software Process / Software Process Models / Case Study: Student Team Guidance / Summary / Exercises

4. Agile Software Processes
Agile History and Agile Manifesto / Agile Principles / Agile Methods / Agile Processes / Integrating Agile with Non-Agile Processes / Summary / Exercises

5. Quality in the Software Process
Principles of Managing Quality / Managing Quality in Agile Processes / Quality Planning / Inspections / QA Reviews and Audits / Defect Management / Process Improvement and Process Metrics / Organization-Level Quality and the CMMI / Case Study: Software Quality Assurance Plan for Encounter / Summary / Exercises

6. Software Configuration Management
Software Configuration Management Goals / SCM Activities / Configuration Management Plans / Configuration Management Systems / Case Study: Encounter Video Game / Case Study: Eclipse / Student Team Guidance: Configuration Management / Summary / Exercises

Part III: PROJECT MANAGEMENT

7. Principles of Software Project Management I: Organization, Tools, and Risk Management
Software Project Organization / Team Size / Geographically Distributed Development / The Team Software Process / Software Project Tools and Techniques / Risk Management / Student Team Guidance: Organizing the Software Project's Management / Summary / Exercises

8. Principles of Software Project Management II: Estimation, Scheduling, and Planning
Cost Estimation / Scheduling / The Software Project Management Plan / Case Study: Encounter Project Management Plan / Case Study: Project Management in Eclipse / Case Study: Project Management for OpenOffice / Case Study: Student Team Guidance / Summary / Exercises

9. Quality and Metrics in Project Management
Cultivating and Planning Internal Quality / Project Metrics / Using Metrics for Improvement / Software Verification and Validation Plan / Case Study: Software Verification and Validation Plan for Encounter / Summary / Exercises

Part IV: REQUIREMENT ANALYSIS

10. Principles of Requirements Analysis
The Value of Requirements Analysis / Sources of Requirements / High-level vs. Detailed Requirements / Types of Requirements / Nonfunctional Requirements / Documenting Requirements / Traceability / Agile Methods and Requirements / Updating the Project to Reflect Requirements Analysis / Summary / Exercises

11. Analyzing High-Level Requirements
Examples of Customer Wants / Stakeholder Vision / The Interview and Documentation Process / Writing an Overview / Describing Main Functions and Use Cases / Agile Methods for High-Level Requirements / Specifying User Interfaces: High Level / Security Requirements / Using Diagrams for High-Level Requirement / Case Study: High-Level Software Requirements Specification (SRS) for the Encounter Video Game / Case Study: High-Level Requirements for Eclipse / Eclipse Platform Subproject (First of three) / Case Study: High-Level Requirements for OpenOffice / Summary / Exercises

12. Analyzing Detailed Requirements
The Meaning of Detailed Requirements / Organizing Detailed Requirements / User Interfaces: Detailed Requirements / Detailed Security Requirements / Error Conditions / Traceability of Detailed Requirements / Using Detailed Requirements to Manage Projects / Prioritizing Requirements / Associating Requirements with Tests / Agile Methods for Detailed Requirements / Using Tools and the Web for Requirements Analysis / The Effects on Projects of the Detailed Requirements Process / Student Project Guide: Requirements for the Encounter Case Study / Case Study: Detailed Requirements for the Encounter Video Game / Summary / Exercises

13. Quality and Metrics in Requirements Analysis
Quality of Requirements for Agile Projects / Accessibility of Requirements / Comprehensiveness of Requirements / Understandability of Requirements / Unambiguity of Requirements / Consistency of Requirements / Prioritization of Requirements / Security and High-Level Requirements / Self-Completeness of Requirements / Testability of Requirements / Traceability of Requirements / Metrics for Requirements Analysis / Inspecting Detailed Requirements / Summary / Exercises

14. Formal and Emerging Methods in Requirements Analysis: An Introduction
Provable Requirements Method / Introduction to Formal Methods / Mathematical Preliminaries / The Z-Specification Language / The B Language System / Trade-Offs for Using a B-Like System / Summary / Exercises

Part V: SOFTWARE DESIGN

15. Principles of Software Design
The Goals of Software Design / Integrating Design Models / Frameworks / IEEE Standards for Expressing Designs / Summary / Exercises

16. The Unified Modeling Language
Classes in UML / Class Relationships in UML / Multiplicity / Inheritance / Sequence Diagrams / State Diagrams / Activity Diagrams / Data Flow Models / A Design Example with UML / Summary / Exercises

17. Software Design Patterns
Examples of a Recurring Design Purpose / An Introduction to Design Patterns / Summary of Design Patterns by Type: Creational, Structural, and Behavioral / Characteristics of Design Patterns: Viewpoints, Roles, and Levels / Selected Creational Design Patterns / Selected Structural Design Patterns / Selected Behavioral Design Patterns / Design Pattern Forms: Delegation and Recursion / Summary / Exercises

18. Software Architecture
A Categorization of Architectures / Software Architecture Alternatives and Their Class Models / Trading Off Architecture Alternatives / Tools for Architectures / IEEE Standards for Expressing Designs / Effects of Architecture Selection on the Project Plan / Case Study: Preparing to Design Encounter (Student Project Guide continued) / Case Study: Software Design Document for the Role-Playing Video Game Framework / Case Study: Software Design Document for Encounter (Uses the Framework) / Case Study: Architecture of Eclipse / Case Study: OpenOffice Architecture / Summary / Exercises

19. Detailed Design
Relating Use Cases, Architecture, and Detailed Design / A Typical Road Map for the "Detailed Design" Process / Object-Oriented Design Principles / Designing against Interfaces / Specifying Classes, Functions, and Algorithms / Reusing Components / Sequence and Data Flow Diagrams for Detailed Design / Detailed Design and Agile Processes / Design in the Unified Development Process / IEEE Standard 890 for Detailed Design / Updating a Project with Detailed Design / Case Study: Detailed Design of Encounter / Case Study: Detailed Design of Eclipse / Summary / Exercises

20. Design Quality and Metrics
Degree of Understandability, Cohesion, and Coupling / Degree of Sufficiency as a Quality Goal / Degree of Robustness as a Quality Goal / Degree of Flexibility as a Design Quality Goal / Degree of Reusability as a Design Quality Goal / Degree of Time Efficiency as a Design Quality Measure / Degree of Space Efficiency as a Design Quality Measure / Degree of Reliability as a Design Quality Measure / Degree of Security as a Design Quality Measure / Assessing Quality in Architecture Selection / Assessing the Quality of Detailed Designs / Summary / Exercises

21. Advanced and Emerging Methods in Software Design
Designing in a Distributed Environment / Introduction to Aspect-Oriented Programming / Designing for Security with UMLsec / Model-Driven Architectures / The Formal Design Process in B / Summary / Exercises

Part VI: IMPLEMENTATION

22. Principles of Implementation
Agile and Non-Agile Approaches to Implementation / Choosing a Programming Language / Identifying Classes / Defining Methods / Implementation Practices / Defensive Programming / Coding Standards / Comments / Tools and Environments for Programming / Case Study: Encounter Implementation / Case Study: Eclipse / Case Study: OpenOffice / Student Team Guidance for Implementation / Summary / Code Listings Referred to in This Chapter / Exercises

23. Quality and Metrics in Implementation
Quality of Implementation / Code Inspections and Related Quality Procedures / Summary / Exercises

24. Refactoring
Big Refactorings / Composing Methods / Moving Features between Objects / Organizing Data / Generalization / Introducing Modules / Refactoring in Projects / Summary / Exercises

Part VII: TESTING AND MAINTENANCE

25. Introduction to Software Testing
Testing Early and Often, and the Agile Connection / Retesting: Regression Testing / Black Box and White Box Testing / Unit Testing vs. Post-Unit Testing / Testing Object-Oriented Implementation / Documenting Tests / Test Planning / Testing Test Suites by Fault Injection / Summary / Exercises

26. Unit Testing
The Sources of Units for Unit Testing / Unit Test Methods / Testing Methods / Test-Driven Development / Case Study: Encounter Video Game / Summary / Exercises

27. Module and Integration Testing
Stubs and Drivers / Testing a Class / Integration / Daily Builds / Interface Testing / Module Integration / Case Study: Class Test for Encounter / Case Study: Encounter Integration Plan / Summary / Exercises

28. Testing at the System Level
Functional Testing / Nonfunctional Testing / Testing with Lightweight Requirements / Testing Shortly before Release / Case Study: Encounter Software Test Documentation / Case Study: Eclipse / Case Study: OpenOffice / Summary / Exercises

29. Software Maintenance
Types of Software Maintenance / Issues of Software Maintenance / Maintenance Process / IEEE Maintenance Standards / Software Evolution / Maintenance Metrics / Case Study / Summary / Exercises

Glossary